package com.adou.common.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

public interface RunDynXxxMapper{
	
	/**
     * 创建动态数据表
     * @param map table_name数据表名称,table_field_defs定义字段
     */
	void createNewTable(Map<String, Object> map);
	
	/**
     * 删除动态数据表
     * @param table_name 数据表名称
     */
	void dropTable(@Param("table_name") String table_name);
	
	/**
     * 修改动态数据表名称
     * @param map old_table_name原数据表名称,new_table_name新数据表名称
     */
	void alterTableName(Map<String, Object> map);
	
	/**
     * 获取当前数据库名称
     * @return
     */
	String getCurDataBaseName();
	
	/**
     * 判断指定数据库是否有指定数据表
     * @param map database_Name数据库名称,table_name数据表名称
     * @return
     */
	String isTargetTableExistInDB(Map<String, Object> map);

	/**
     * 根据ID获取数据
     * @param map field_names数据字段,table_name数据表名称,id
     * @return
     */
    Map<String, Object> selectByPrimaryKey(Map<String, Object> map);	
	
    /**
     * 根据ID删除数据
     * @param map table_name数据表名称,id
     * @return
     */
    int deleteByPrimaryKey(Map<String, Object> map);

    /**
     * 插入数据
     * @param map table_name数据表名称,field_names数据字段,field_values数据字段值
     * @return
     */
    int insert(Map<String, Object> map);

    /**
     * 根据流程运行表主键查询数据
     * @param sql
     * @return
     */
    List<Map<String, Object>> queryByFlowId(@Param("sql") String sql);

    /**
     * 根据ID更新数据
     * @param map table_name数据表名称,update_fields_value数据字段及值,id
     * @return
     */
    int updateByPrimaryKey(Map<String, Object> map);
    

    /**
     * 根据流程ID和表单ID更新数据
     * @param map table_name数据表名称,update_fields_value数据字段及值,formid,flowid
     * @return
     */
    int updateByFlow(Map<String, Object> map);
    

    /**
     * 根据查询参数获取记录数
     * @param map table_name数据表名称,查询参数
     * @return
     */
    int findCount(Map<String, Object> map);

    /**
     * 根据查询参数获取数据
     * @param map field_names数据字段,table_name数据表名称,查询参数
     * @return
     */
    List<Map<String, Object>> findAll(Map<String, Object> map);

    /**
     * 根据 表单主键 和表单名 查询数据
     * @param map id 主键 table_name 表单名
     * @return
     */
    Map<String,Object> queryById(Map<String,Object> map);

}